package com.lb.activity.service;

import com.lb.activity.po.ExamineFlowStep;
import com.lb.activity.po.LeaveBill;
import com.lb.activity.util.ResultUtil;
import com.lb.activity.vo.LeaveBillVo;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;

import java.util.List;

public interface LeaveBillService {
    /**
     * 添加请假申请
     * @param leaveBillVo
     * @return
     */
    ResultUtil addLeaveBillI(LeaveBillVo leaveBillVo);

    /**
     * 我的请假申请
     * @param leaveBillVo
     * @return
     */
    ResultUtil myLeaveBillList(LeaveBillVo leaveBillVo);

    /**
     * 计算活动线
     * @param deployedProcessDefinition
     * @param historicActivityInstances
     * @return
     */
    List<String> getHighLightedFlows(ProcessDefinitionEntity deployedProcessDefinition, List<HistoricActivityInstance> historicActivityInstances);

    /**
     * 部门领导审批
     * @param leaveBillVo
     * @return
     */
    ResultUtil deptLeaveBillList(LeaveBillVo leaveBillVo);

    /**
     * 获取单个记录
     * @param taskId
     * @return
     */
    LeaveBill getOneLeaveBill(String taskId);

    /**
     * 部门领导审批
     * @param taskId
     * @param approve
     * @return
     */
    ResultUtil complateLeaveBill(String taskId, String approve);

    /**
     * 人力领导审批列表
     * @param leaveBillVo
     * @return
     */
    ResultUtil deptLeaveBillPersonList(LeaveBillVo leaveBillVo);

    /**
     * 人力审批
     * @param taskId
     * @param hrapprove
     * @return
     */
    ResultUtil complateHrLeaveBill(String taskId, String hrapprove);

    /**
     * 我的销假列表
     * @param leaveBillVo
     * @return
     */
    ResultUtil myLeaveBillReportBackList(LeaveBillVo leaveBillVo);

    /**
     * 编辑我的销假记录
     * @param leaveBillVo
     * @return
     */
    ResultUtil editMyLeaveBillReportBack(LeaveBillVo leaveBillVo);

    /**
     * 我的重新提交页面
     * @param leaveBillVo
     * @return
     */
    ResultUtil myLeaveBillApplyAgainList(LeaveBillVo leaveBillVo);

    /**
     * 重新提交
     * @param leaveBillVo
     * @return
     */
    ResultUtil editMyLeaveBillApplyAgain(LeaveBillVo leaveBillVo);

    /**
     * 我的所有请假
     * @param leaveBillVo
     * @return
     */
    ResultUtil myLeaveBillAll(LeaveBillVo leaveBillVo);

    /**
     * 请假审批记录
     * @param leaveId
     * @return
     */
    List<ExamineFlowStep> getExamineStep(Long leaveId);
}
